Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device. Flash memory generally provides highest performance when the number of data bits per cell is lowest, such as binary flash, also known as single level cell (SLC) flash that stores one bit per cell. Flash memory that is configured to store more than one bit per cell, known as multi-level cell (MLC) flash, can store two or more bits of information per cell. While SLC flash memory is generally known for having better read and write performance (e.g., speed and endurance) than MLC flash, MLC flash provides more storage capacity and is generally less expensive to produce. The endurance and performance of MLC flash tends to decrease as the number of bits per cell of a given MLC configuration increases.
In a number of existing non-volatile memory systems, SLC and MLC are used together to try and capitalize on the advantages of each type of memory. The SLC memory may be used for its faster performance and the MLC for its greater storage density. For example, an SLC portion of a memory may be used as a buffer for data being written to the MLC memory, to support fast burst writes of data received from a host, and as the storage area of choice for frequently updated data in a memory system. Regardless of the type of non-volatile memory, the responsiveness of a non-volatile memory system may be affected by its ability to manage internal maintenance operations to generate or maintain enough free blocks to handle subsequent host write requests.